// 获取用户已开通的模块和校验用户模块权限
import { watch } from 'vue'
import { defineStore } from 'pinia'
import Cookies from 'js-cookie'
import { getUserAllModule } from '@/api/member'

// 第一个参数是模块名称，唯一标识该模块，第二个参数为一个包含state、getters、actions属性的对象
export const usePermissionStore = defineStore('permission', {
  state() {
    // 定义状态属性的方法，返回值为定义的状态属性对象
    return {
      permissionList: [],
    }
  },
  getters: {
    getPermission() {
      return this.permissionList
    },
  },
  actions: {
    initPermission(callback = null) {
      if (Cookies.get('token')) {
        return this.getUserPermission()
      } else {
        return Promise.resolve([])
      }
    },

    async getPermissionByCode(code) {
      if (code) {
        const res = await this.initPermission()
        if (res.filter((item) => item.code === code).length >= 0) return true
        return false
      }
      return false
    },
    getUserPermission() {
      // 如果没有找到或数据无效，则从远程获取
      return getUserAllModule()
        .then((res) => {
          if (res.code === 20000) {
            this.chainTree = res.data
            return res.data
          } else {
            return []
          }
        })
        .catch((error) => {
          return []
        })
    },
  },
})
